package com.ruoyi.system.service.impl;

import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import java.util.List;

import com.ruoyi.system.mapper.SysDeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.ZnCompanyConfigMapper;
import com.ruoyi.system.domain.ZnCompanyConfig;
import com.ruoyi.system.service.IZnCompanyConfigService;

/**
 * 系统参数Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-03-08
 */
@Service
public class ZnCompanyConfigServiceImpl implements IZnCompanyConfigService 
{
    @Autowired
    private ZnCompanyConfigMapper znCompanyConfigMapper;
    @Autowired
    private SysDeptMapper deptMapper;
    /**
     * 查询系统参数
     * 
     * @param id 系统参数主键
     * @return 系统参数
     */
    @Override
    public ZnCompanyConfig selectZnCompanyConfigById(Long id)
    {
        return znCompanyConfigMapper.selectZnCompanyConfigById(id);
    }

    /**
     * 查询系统参数列表
     * 
     * @param znCompanyConfig 系统参数
     * @return 系统参数
     */
    @Override
    public List<ZnCompanyConfig> selectZnCompanyConfigList(ZnCompanyConfig znCompanyConfig)
    {
        znCompanyConfig.setTenantId(SecurityUtils.getTenantId());
        return znCompanyConfigMapper.selectZnCompanyConfigList(znCompanyConfig);
    }
     /**
      * 查询系统参数记录数
      *
      * @param znCompanyConfig 系统参数
      * @return 系统参数记录数
     */
    public Integer selectZnCompanyConfigCount(ZnCompanyConfig znCompanyConfig){
        znCompanyConfig.setTenantId(SecurityUtils.getTenantId());
        return znCompanyConfigMapper.selectZnCompanyConfigCount(znCompanyConfig);
    }


    /**
     * 新增系统参数
     * 
     * @param znCompanyConfig 系统参数
     * @return 结果
     */
    @Override
    public int insertZnCompanyConfig(ZnCompanyConfig znCompanyConfig)
    {
        if(SecurityUtils.getTenantId()!=null){//防止新增用户是使用
            znCompanyConfig.setTenantId(SecurityUtils.getTenantId());
        }
        znCompanyConfig.setDeleteFlag("0");
        return znCompanyConfigMapper.insertZnCompanyConfig(znCompanyConfig);
    }

    /**
     * 修改系统参数
     * 
     * @param znCompanyConfig 系统参数
     * @return 结果
     */
    @Override
    public int updateZnCompanyConfig(ZnCompanyConfig znCompanyConfig)
    {
        znCompanyConfig.setCompanyName(znCompanyConfig.getCompanyName().trim());
        ZnCompanyConfig old = znCompanyConfigMapper.selectZnCompanyConfigById(znCompanyConfig.getId());
        if(!znCompanyConfig.getCompanyName().equals(old.getCompanyName())){//公司名称变化，需要验证公司名称是否已被使用，未被使用同时同步组织架构的名称，
            ZnCompanyConfig temp = new ZnCompanyConfig();
            temp.setCompanyName(znCompanyConfig.getCompanyName());
            temp.getParams().put("id",znCompanyConfig.getId());
            int count = znCompanyConfigMapper.selectZnCompanyConfigCount(temp);
            if(count==0){
                SysDept dept = new SysDept();
                dept.setTenantId(SecurityUtils.getTenantId());
                dept.setDeptName(znCompanyConfig.getCompanyName());
                dept.setParentId(0l);
                dept.setUpdateBy(SecurityUtils.getUsername());
                deptMapper.updateDeptByCondition(dept);
            }else{
                throw new ServiceException("公司名称：" + znCompanyConfig.getCompanyName() + " 已被使用,请联系平台管理员！");
            }
        }
        return znCompanyConfigMapper.updateZnCompanyConfig(znCompanyConfig);
    }

    /**
     * 批量删除系统参数
     * 
     * @param ids 需要删除的系统参数主键
     * @return 结果
     */
    @Override
    public int deleteZnCompanyConfigByIds(Long[] ids)
    {
        return znCompanyConfigMapper.deleteZnCompanyConfigByIds(ids);
    }

    /**
     * 删除系统参数信息
     * 
     * @param id 系统参数主键
     * @return 结果
     */
    @Override
    public int deleteZnCompanyConfigById(Long id)
    {
        return znCompanyConfigMapper.deleteZnCompanyConfigById(id);
    }

    @Override
    public ZnCompanyConfig selectZnCompanyConfigBytenantId(Long tenantId) {
        if(tenantId==null){
            tenantId=SecurityUtils.getTenantId();
        }
        return znCompanyConfigMapper.selectZnCompanyConfigBytenantId(tenantId);
    }
}
